/**
 * Depends:
 * 
 */
$.fn.searchGridWidget = function(options){
	var $this = this;
	options = options || {};
	
	var rowSelector    = options.rowSelector    || ".r";
	var headSelector   = options.headSelector   || ".result-output-menu";
	var helperSelector = options.helperSelector || ".result-output-service";
	
	var shortDescriptorSelector = options.shortDescriptorSelector || ".j-short-description";
	var fullDescriptorSelector = options.fullDescriptorSelector   || ".j-full-description";
	
	var collapserSelector = options.collapserSelector || ".j-toggle-content-hide";
	var expanderSelector = options.expanderSelector   || ".j-toggle-content-show";
	
	/**
	 * 
	 */
	$this._init = function(){
		$this.rowCollection = $(this).find(rowSelector);
		$this.head 			= $(this).find(headSelector);
	};
	
	/**
	 * 
	 */
	$this._bindEvents = function(){
		$(collapserSelector).click(function(){
			$(this).hide();
			/**
			 * @todo need to optimize, One more wtf
			 */
			var jfull = $(this).parents('span.r_text').find('.j-full-description');
			jfull.hide();
			$(this).parents('span.r_text').find(expanderSelector).show();
			$(this).closest('div.r').height(98);
			return false;
		});
		/* ------------------------------------- */
		$(expanderSelector).click(function(){
			$(this).hide();
			var jfull = $(this).parents('span.r_text').find('.j-full-description, '+collapserSelector);
			jfull.show();
			/**
			 * @fixme My WTF 98)
			 */
			$(this).closest('div.r').height(jfull.height()+98);
			return false;
		});
		/* ------------------------------------- */
	};
	
	/**
	 * 
	 */
	$this.showHelper = function(row){
		row.find(helperSelector).show();
	};
	
	/**
	 * 
	 */
	$this.hideHelper = function(row){
		row.find(helperSelector).hide();
	};
	
	/**
	 * 
	 */
	$this.expandContent   = function(row){
		row.find(shortDescriptorSelector).hide();
		row.find(fullDescriptorSelector).show();
	};
	
	/**
	 * 
	 */
	$this.collapseContent = function(row){
		row.find(shortDescriptorSelector).show();
		row.find(fullDescriptorSelector).hide();
	};
	
	/**
	 * Implementation
	 */
	$this._init();
	$this._bindEvents();
	
	return $(this);
};